Revert "Ignore stale NetworkCallback if NETWORK_STATE_CHANGED already received" This reverts commit eb449fceda6ea6181ab2d9e711828d3c54b6f038. Reason for revert: Causes b/381168273 Change-Id: I423ebd7f9c63b58e2e163a8e643c732b8544d096 
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index fbf7b3a..d3525d8 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java 
@@ -246,7 +246,6 @@  protected final Handler mCallbackHandler;  protected int mWifiInfoLevel = WIFI_LEVEL_UNREACHABLE;  protected int mScanResultLevel = WIFI_LEVEL_UNREACHABLE; - protected WifiInfo mPrimaryWifiInfo;  protected WifiInfo mWifiInfo;  protected NetworkInfo mNetworkInfo;  protected Network mNetwork; @@ -1004,7 +1003,6 @@  */  synchronized void onPrimaryWifiInfoChanged(  @Nullable WifiInfo primaryWifiInfo, @Nullable NetworkInfo networkInfo) { - mPrimaryWifiInfo = primaryWifiInfo;  if (primaryWifiInfo == null || !connectionInfoMatches(primaryWifiInfo)) {  if (mNetworkInfo != null) {  mNetworkInfo = null; @@ -1041,11 +1039,8 @@  }    // Treat non-primary, non-OEM connections as disconnected. - // If mPrimaryWifiInfo exists (i.e. WifiManager.getConnectionInfo()) but this WifiInfo is - // also primary, treat it as lost since it may be a stale value. - boolean isPrimary = NonSdkApiWrapper.isPrimary(wifiInfo) - && (mPrimaryWifiInfo == null || wifiInfo.equals(mPrimaryWifiInfo)); - if (!isPrimary && !NonSdkApiWrapper.isOemCapabilities(capabilities)) { + if (!NonSdkApiWrapper.isPrimary(wifiInfo) + && !NonSdkApiWrapper.isOemCapabilities(capabilities)) {  onNetworkLost(network);  return;  } 
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java index 198fdd5..6cfde19 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java 
@@ -60,7 +60,6 @@  import android.net.MacAddress;  import android.net.Network;  import android.net.NetworkCapabilities; -import android.net.NetworkInfo;  import android.net.wifi.ScanResult;  import android.net.wifi.WifiConfiguration;  import android.net.wifi.WifiConfiguration.NetworkSelectionStatus; @@ -487,46 +486,6 @@  }  }   - /** - * Tests that onNetworkCapabilitiesChanged is ignored if it is primary but another network is - * already marked as primary via NETWORK_STATE_CHANGED/getConnectionInfo(). This may happen - * as a race condition if we get the broadcast before NetworkCallback changes. - */ - @Test - public void testOnNetworkCapabilitiesChanged_otherNetworkIsPrimary_doesNotBecomeConnected() { - final WifiConfiguration config = new WifiConfiguration(); - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); - config.SSID = "\"ssid\""; - config.networkId = 1; - final StandardWifiEntry entry = new StandardWifiEntry( - mMockInjector, mTestHandler, - ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP), - Collections.singletonList(config), null, mMockWifiManager, - false /* forSavedNetworksPage */); - when(mMockWifiInfo.getNetworkId()).thenReturn(1); - when(mMockWifiInfo.getRssi()).thenReturn(TestUtils.GOOD_RSSI); - - MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking(); - try { - // Mock a different primary WifiInfo for onPrimaryWifiInfoChanged - WifiInfo primaryWifiInfo = mock(WifiInfo.class); - when(primaryWifiInfo.getNetworkId()).thenReturn(2); - NetworkInfo mockNetworkInfo = mock(NetworkInfo.class); - entry.onPrimaryWifiInfoChanged(primaryWifiInfo, mockNetworkInfo); - - // Stale NetworkCallback arrives - ExtendedMockito.doReturn(true) - .when(() -> NonSdkApiWrapper.isPrimary(mMockWifiInfo)); - entry.onNetworkCapabilitiesChanged(mMockNetwork, mMockNetworkCapabilities); - - // Stale NetworkCallback should be ignored and the network should remain disconnected. - assertThat(entry.getConnectedState()).isEqualTo(CONNECTED_STATE_DISCONNECTED); - assertThat(entry.isPrimaryNetwork()).isFalse(); - } finally { - session.finishMocking(); - } - } -  @Test  public void testConnect_savedNetwork_usesSavedConfig() {  final ScanResult scan = buildScanResult("ssid", "bssid", 0, TestUtils.GOOD_RSSI);